package com.too;

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.StreamEntryID;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * 测试Redis和Camel集成
 *
 * @author ouyf
 * @date 2025/9/16 14:55
 * <p>
 * Copyright (c) Siemens Mobility TBDS 2025, All Rights Reserved, Confidential
 */
public class RedisCamelRoute extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("redis-streams:mystream?key=mygroup&consumer=myconsumer")
                .to("log:output");
    }

    /**
     * 主方法，启动Camel上下文并测试Redis Stream消息的生产和消费
     * 测试结果在camel3.13.0中无法正常运行，建议研究更高版本，但是需要jdk17以上版本
     *
     * @param args 命令行参数
     * @throws Exception 可能抛出的异常
     */
    @Deprecated
    public static void main(String[] args) throws Exception {
        CamelContext context = new DefaultCamelContext();
        context.addRoutes(new RedisCamelRoute());
        context.start();
        // 生产一些数据到 Redis Stream 以测试路由，例如使用 Jedis 客户端：
        try (Jedis jedis = new Jedis("192.168.50.171", 6379)) { // 确保这里使用的是正确的 Redis 地址和端口
            Map<String, String> message = new HashMap<>();
            message.put("test", "value");
//            jedis.xadd("mystream", "*", message); // 向 mystream 添加一个新消息
            StreamEntryID streamEntryID = new StreamEntryID("*");
            jedis.xadd("key", streamEntryID, message);
            TimeUnit.SECONDS.sleep(1); // 等待消息被消费和处理，根据实际情况调整等待时间。
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            context.stop();
        }
    }
}
